roslaunch

http://wiki.ros.org/roslaunch

首先说之前说过的.launch文件的格式: 1.roslaunch是通过单通道来读XML文件的,有覆盖的原则,所以如果有很多个标签,那么有用的是最后一个标签,但是依赖于此是不明智的,所以推荐使用$(arg)/设置来操作重写行为

2.xml文件的标签分为两种,一种是《foo/》,另一种是《foo》《/foo》(《》换成<>)。格式的话最好有缩进。

3.替换参数(substitution args)(还没看懂) Roslaunch 标签的特性使他能够使用替换参数,目前支持的有

$(env ENVIRONMENT_VARIABLE) – 替换掉当前环境的一个变量值,如果环境变量没有设置则launch会失败。该值不能 被重写

$(optenv ENVIRONMENT_VARIABLE)

$(optenv ENVIRONMENT_VARIABLE default_value)

–如果环境变量已设置,则替换他。如果提供了default_value,则环境变量没设置也可以替换。如果default_value没有提供,则会使用空字符串。default_value可以有多个词,由空格分开。

例子:

<param name="foo" value="$(optenv NUM_CPUS 1)" />

<param name="foo" value="$(optenv CONFIG_PATH /home/marvin/ros_workspace)" />

<param name="foo" value="$(optenv VARIABLE ros rocks)" />


default_value第一句是1.第二句:/home/marvin/ros_workspace,第三句: ros和rock

`$(find pkg)`

anon是anonymous的意思,这个是以[name]为基础生成一个匿名的id。两次及以上使用$(anon foo)会生成相同的id(这里foo是一个名字)。

`$(arg foo)`

$(arg foo) evaluates to the value specified by an tag. There must be a corresponding tag in the same launch file that declares the arg. 暂时不能理解。。。 大概就是能够将foo作为参数床给前面的什么东西。看例子

```
<param name="foo" value="$(arg my_foo)" />

<node name="add_two_ints_server" pkg="beginner_tutorials" type="add_two_ints_server" />

<node name="add_two_ints_client" pkg="beginner_tutorials" type="add_two_ints_client" args="$(arg a) $(arg b)" />
```

第一句能够把my_foo赋给参数parameter. 第二三句则是将a,b作为参数,传给add_two_ints。

  1. 具体例子:
    
    
    
     
    
    
    
    
    
    
    
    
     
     
     
       
       
       
       
     
    
    
    
  1. 参数赋值

    ```

</launch>```